"""
语法：
    try:
        可能发生错误的代码     <----监控区
    except:
        如果发生异常要执行的代码  <---- 捕获区  逮捕区
需求：尝试打开test.txt 文件
"""
try:
    #在try中尝试打开这个文件，如果存在则顺利通过，如果不存在就执行except
    f = open('test.txt','r',encoding="UTF-8")
except: #没有捕获制定的异常的话，默认捕获的Exception
    print("此文件不存在")#如果文件不存在就执行输出语句

"""
语法：
    try:
        可能发生错误的代码     <----监控区
    except 异常的类型 as 变量名:  当捕获多个异常的时候，可以把要捕获的异常类型的名字，放到except后，并使用元组的方式进行书写； as后的变量是异常的描述信息
        如果发生异常要执行的代码  <---- 捕获区  逮捕区
需求
"""
try:
    #print(num)
    print(1/0)
except (NameError,ZeroDivisionError) as result:
    print("有错误")
    print("异常的描述信息：",result)


"""
语法：
    try:
        可能发生错误的代码     <----监控区
    except:
        如果发生异常要执行的代码  <---- 捕获区  逮捕区
    else:
        如果没有异常发生要执行的代码   <--- 正常区  释放区
"""
try:
    print("1")
except Exception as err:
    print(err)
else:
    print("无罪释放")


"""
语法：
    try:
        可能发生错误的代码     <----监控区
    except:
        如果发生异常要执行的代码  <---- 捕获区  逮捕区
    else:
        如果没有异常发生要执行的代码   <--- 正常区  释放区
    finally:
        无论代码是否发生异常都要执行的区域   <--- 始终区 最终区
        
需求：尝试以 r 模式去打开niit.txt文件，如果有异常以为 w 的模式去打开，并写入异常信息，如果有没有异常就读取该文件的内容，最终关闭文件
"""
try:
    f = open("niit.txt",'r',encoding='utf-8')
except Exception as result:
    f = open('niit.txt','w',encoding='utf-8')
    f.write(str(result))
else:
    s = f.read()
    print("正常输出：",s)
finally:
    f.close()
